<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>Spine - Clases</title>
        <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
        <script src="js/spine.js" type="text/javascript" charset="utf-8"></script>
    </head>

    <body>
        <script type="text/javascript">
            // Como definir una clase Usuario
            var Usuario = Spine.Class.sub();
            
            // Como agregar propiedad estaticas
            Usuario.extend({
                ALUMNO : 0,
                PROFESOR : 1,
                ADMINISTRADOR : 2
            });
            
            // Como agregar propiedad de instancia 
            Usuario.include({
                nombre: "sin nombre",
                paterno : "sin ap. paterno",
                materno : "sin ap. materno",
                
                init : function(obj){ // constructor de la clase
                    console.info("constructor");
                    console.dir(arguments);
                    this.nombre = obj.nombre;
                    this.paterno = obj.paterno;
                    //this.materno = obj.materno  // no existe 
                },
                
                getNombreCompleto : function(){
                    return  this.nombre+" "+this.paterno+" "+this.materno;
                }
            });
            
            // Constructor con parametros y forma de instacia la clase
            var persona = new Usuario({nombre:"Dan Joas",paterno:"de la Cruz"});
            // Como se interactua con la clase
            console.info("persona.nombre : %s",persona.nombre);
            console.info("persona.paterno : %s",persona.paterno);
            console.info("persona.materno : %s",persona.materno);
            persona.materno = "Guevara";
            console.info("persona.materno : %s",persona.materno);
            console.info("ALUMNO : %s",Usuario.ALUMNO);
            console.info("PROFESOR : %s",Usuario.PROFESOR);
            console.info("ADMINISTRADOR : %s",Usuario.ADMINISTRADOR);
            console.info(persona.getNombreCompleto());
            console.dir(persona);
            
            // Herencia
            var Empleado = Usuario.sub();
            Empleado.include({
               codigo : "sin codigo" ,
               init :function(obj){
                   this.codigo = obj.codigo
               },
               getCodigoEmpleado : function(){
                   return this.codigo;
               }
            });
            
            empleado = new Empleado({codigo:"0810597"});
            console.info("empleado.getCodigoEmpleado() : %s",empleado.getCodigoEmpleado());
            console.info("empleado.getNombreCompleto() : %s",empleado.getNombreCompleto());
            console.dir(empleado);  
        </script>

    </body>
</html>
